SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_Q41]                 
/*-------------------------------------------------------------------*/                  
/*----- Empresa           : OFISIS S.A.                          ----*/                  
/*----- Cliente           : OFISIS S.A.                          ----*/                  
/*----- Sistema           : Contabilidad                         ----*/                  
/*----- Modulo            : Empresa                              ----*/                  
/*----- Programa          : REPORTE  de FAS - 52                 ----*/                  
/*----- Nombre            : SP_TXMVTO_CNTB_Q41                   ----*/                  
/*----- Script            : TXMVTO_CNTB                          ----*/                  
/*----- Desarrollado por  : OFISIS                               ----*/                  
/*----- Fecha             : 07/11/2003                           ----*/                  
/*----- Base de Datos     : MS SQL Server                        ----*/                  
/*----- Version BD        : 7.0                                  ----*/                  
/*-------------------------------------------------------------------*/                  
/*-------------------------------------------------------------------*/                  
/*----- Comentarios  : basado en el proceso de FAS 52(modif. Percy Garcia)            ----*/                  
/*-------------------------------------------------------------------*/                  
/*-------------------------------------------------------------------*/                  
/*----- Drop procedure SP_TXMVTO_CNTB_Q41                        ----*/                  
/*----- Grant all on SP_TXMVTO_CNTB_Q41 to PUBLIC                ----*/                  
/*----- SP_TXMVTO_CNTB_Q41 '01',1,4,'DOL',2003,12,12, '40111', '40111', 'S'             ----*/                  
/*-------------------------------------------------------------------*/                  
          
@ISCO_EMPR       TD_VC_002,                  
@INNU_CNTB_EMP1  TD_IN_001_CONT,                  
@INNU_CNTB_EMP2  TD_IN_001_CONT,                  
@ISCO_MONE_CTB2  TD_VC_003,                  
@INNU_ANNO       TD_IN_004_ANNO,                  
@INNU_MES1       TD_IN_002_MESE,                  
@INNU_MES2       TD_IN_002_MESE,         
@ISCO_CNTA_INIC  TD_VC_020,         
@ISCO_CNTA_FINA  TD_VC_020,         
@ISST_PARC       TD_VC_001         
As                  
Declare                   
@CSCO_UNID_CNTB  TD_VC_003,                  
@CSCO_OPRC_CNTB  TD_VC_003,                  
@CNNU_MESE       TD_IN_002_MESE,                  
@CSNU_ASTO       TD_VC_010,                  
@CNNU_SECU       TD_IN_001,                  
@CDFE_ASTO_CNTB  TD_DT_001,                  
@CSCO_CNTA_EMPR  TD_VC_020_CNTA,                  
@CSTI_AUXI_EMPR  TD_VC_001,                  
@CSCO_AUXI_EMPR  TD_VC_020,                  
@CSTI_DOCU       TD_VC_003,                  
@CSNU_DOCU       TD_VC_020,                  
@CDFE_DOCU       TD_DT_001,                  
@CSTI_CAMB       TD_VC_003,                  
@CSCO_MONE       TD_VC_003,                  
@CNFA_CAMB       TD_NU_015_006,                  
@CSTI_OPER       TD_VC_003,                  
@CNIM_MVTO_ORIG  TD_NU_016_004,                  
@CNIM_MVTO_CNTB  TD_NU_016_004,                  
@CSDE_GLOS       TD_VC_100,                  
@CSNO_GIRA       TD_VC_100,                  
@CSCO_ORDE_SERV  TD_VC_020,                  
@CSSI_MVTO_CNTB  TD_VC_003,                  
@CSST_CNTA_CAMB  TD_VC_003,                  
@CNFA_VNTA_REFE  TD_NU_015_006,                  
@CNFA_CAMB_DIAR  TD_NU_015_006,                  
@VSID_GEST       TD_VC_003,                  
@VSID_DIFE       TD_VC_003,                  
@VSOP_GEST       TD_VC_003,                  
@VSOP_DIFE       TD_VC_003,                  
@VNNU_ULTI_ASTO  TD_IN_001,                  
@CNFA_CAMB_0001  TD_NU_015_006,                  
@CNFA_CAMB_0002  TD_NU_015_006,                  
@VNFA_CAMB_0002  TD_NU_015_006,                  
@VSCO_MONE_CTB1  TD_VC_003,                  
@VSCO_MONE_NACI  TD_VC_003,             
@VSCO_MONE_0001  TD_VC_003,      
@VSCO_MONE_BA01  TD_VC_003,             
@VSST_TIPO_CAMB  TD_VC_003,        
@VSID_0004       TD_VC_003,        
@VSOP_GEST_0004  TD_VC_003,        
@VSOP_DIFE_0004  TD_VC_003        
                  
 /***** Obtiene informacion sobre operaciones de gestion y diferencia de cambio *****/                  
            
 Select  @VSID_GEST = ID_GEST,                  
 @VSID_DIFE = ID_DIFE,                  
 @VSCO_MONE_CTB1 = CO_MONE,        
 @VSID_0004 = ID_0004                 
 From TTCNTB_EMPR                  
 Where CO_EMPR = @ISCO_EMPR     
 And NU_CNTB_EMPR = @INNU_CNTB_EMP1             
        
 Select  @VSCO_MONE_NACI = CO_MONE_NACI                  
 From TMEMPR              
 Where CO_EMPR = @ISCO_EMPR              
                  
---- PARA EL ID DE GESTION ----             
 Select @VSOP_GEST = CO_OPRC_CNTB                  
 From TTIDEN_OPER                  
 Where  CO_EMPR = @ISCO_EMPR                 
 And NU_CNTB_EMPR = @INNU_CNTB_EMP1                  
 And ID_OPRC = @VSID_GEST             
        
---- PARA EL ID DIF CAMBIO    
 Select @VSOP_DIFE = CO_OPRC_CNTB                  
 From TTIDEN_OPER   
 Where  CO_EMPR = @ISCO_EMPR                 
 And NU_CNTB_EMPR = @INNU_CNTB_EMP1                  
 And ID_OPRC = @VSID_DIFE                  
        
-------- PARA EL ID 0004 --------           
 Select @VSOP_DIFE_0004 = CO_OPRC_CNTB                  
 From TTIDEN_OPER     
 Where  CO_EMPR = @ISCO_EMPR                 
 And NU_CNTB_EMPR = @INNU_CNTB_EMP1                  
 And ID_OPRC = @VSID_0004        
                                         
 Declare CU_TXMVTO_CNTB_Q41_1 Cursor                  
 For                  
 Select t1.CO_UNID_CNTB, t1.CO_OPRC_CNTB, t1.NU_ANNO, t1.NU_MESE, t1.NU_ASTO, t1.NU_SECU,              
 t1.FE_ASTO_CNTB, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU,              
 t1.FE_DOCU, t1.TI_CAMB, t1.CO_MONE, t1.FA_CAMB, t1.TI_OPER, t1.IM_MVTO_ORIG, t1.IM_MVTO_CNTB,              
 t1.DE_GLOS, t1.NO_GIRA, t1.CO_ORDE_SERV, t1.SI_MVTO_CNTB, t2.ST_CNTA_CAMB, t1.FA_CAMB_DIAR              
 From TXMVTO_CNTB t1
      LEFT OUTER JOIN TMPLAN_EMPR t2  
	  On t2.CO_EMPR = t1.CO_EMPR         
	  And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR         
	  And t2.NU_ANNO = 9999        
 Where                
 t1.CO_EMPR = @ISCO_EMPR And              
 t1.NU_CNTB_EMPR = @INNU_CNTB_EMP1             
 And ((@ISST_PARC = 'S' And t1.CO_CNTA_EMPR >= @ISCO_CNTA_INIC And t1.CO_CNTA_EMPR <= @ISCO_CNTA_FINA)        
 Or (@ISST_PARC = 'N'))             
 And Not ( t1.CO_OPRC_CNTB = @VSOP_GEST Or t1.CO_OPRC_CNTB = @VSOP_DIFE Or t1.CO_OPRC_CNTB = @VSOP_DIFE_0004)        
 And t1.ST_GEST = 'N'        
 And t1.NU_ANNO = @INNU_ANNO             
 And t1.NU_MESE >= @INNU_MES1         
 And t1.NU_MESE <= @INNU_MES2         
 And t1.SI_MVTO_CNTB = 'APR'
 Order By t1.CO_EMPR, t1.NU_CNTB_EMPR, t1.NU_ANNO, t1.NU_MESE, t1.NU_ASTO, t1.NU_SECU              
                  
 Open CU_TXMVTO_CNTB_Q41_1                  
 Fetch CU_TXMVTO_CNTB_Q41_1 Into @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO,                   
       @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CDFE_ASTO_CNTB,                  
       @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,                  
       @CSTI_CAMB,@CSCO_MONE, @CNFA_CAMB, @CSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB,                  
       @CSDE_GLOS, @CSNO_GIRA,@CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CSST_CNTA_CAMB,                   
       @CNFA_CAMB_DIAR    
                     
 While @@Fetch_status = 0                  
 Begin                  
 If @CNIM_MVTO_ORIG != 0                  
  Begin                
  If @CSCO_MONE = @ISCO_MONE_CTB2                  
   Begin                  
    Select @CNIM_MVTO_CNTB = @CNIM_MVTO_ORIG                  
    Select @CSTI_CAMB = 'PAC'                  
    If @CNIM_MVTO_CNTB != 0.00           
      Select @CNFA_CAMB = Round((@CNIM_MVTO_ORIG / @CNIM_MVTO_CNTB),3)                
    Else                  
      Select @CNFA_CAMB = 1.000000                  
   End                          
  Else                  
  Begin                  
    select @VSST_TIPO_CAMB = ''                 
           
---Obtiene el tipo de Cambio (PRO, CIE, TRAN)-------            
          
 Select @VSST_TIPO_CAMB = ST_TIPO_CAMB             
 From TMPLAN_ANNO            
 Where CO_EMPR = @ISCO_EMPR            
 And CO_CNTA_EMPR = @CSCO_CNTA_EMPR          
 And NU_ANNO = 9999          
           
--- SI EL TIPO DE CAMBIO DE LA CUENTA ES NULO TOMA EL DE PARAMETROS DE EMPRESA ---        
-- PARA EL A?O EN CURSO          
        
  If IsNull(@VSST_TIPO_CAMB,'') = ''            
   Begin            
   Select @VSST_TIPO_CAMB = ST_TIPO_CAMB             
   From TMPARA_CONT             
   Where CO_EMPR = @ISCO_EMPR            
   And NU_ANNO = 9999            
   End            
            
---------------- OBTIENE LA MONEDA ---------------------------            
  Select @VSCO_MONE_0001 = CO_MON1,             
  @VSCO_MONE_BA01 = CO_MONE_BAS1              
  From TMCONV_MONE             
  Where CO_MONE_ORIG = @CSCO_MONE             
  And CO_MONE_DEST = @ISCO_MONE_CTB2            
            
--- FACTOR DE CAMBIO SI EL TIPO DE CAMBIO ES TRANSFERIDO                  
 If @VSST_TIPO_CAMB = 'TRA'  
  Begin  
   If @CNFA_CAMB_DIAR > 1  
     Select @CNFA_CAMB = @CNFA_CAMB_DIAR  
   Else  
    Select @CNFA_CAMB = IsNull((Case When @CSST_CNTA_CAMB = 'COM' Then FA_CMPR_OFIC Else FA_VNTA_OFIC End), 1)  
    From TCFACT_CAMB  
    Where CO_MONE = @VSCO_MONE_0001  
    And CO_MONE_BASE = @VSCO_MONE_BA01  
    And Convert(DateTime, Convert(Varchar, FE_CAMB, 103), 103) = Convert(DateTime, Convert(Varchar, @CDFE_ASTO_CNTB, 103), 103)  
  End  
  
--- FACTOR DE CAMBIO SI EL TIPO DE CAMBIO ES PROMEDIO MENSUAL            
 If @VSST_TIPO_CAMB = 'PRO'            
   Select @CNFA_CAMB = IsNull((Case When @CSST_CNTA_CAMB = 'COM' Then FA_CAMB_CMPR              
   Else FA_CAMB_VNTA End), 1)               
   From TCFACT_PRME               
   Where CO_EMPR = @ISCO_EMPR            
   And CO_MONE = @VSCO_MONE_0001              
   And CO_MONE_BASE = @VSCO_MONE_BA01            
   And NU_ANNO = @INNU_ANNO               
   And NU_MESE = @INNU_MES1                
            
--- FACTOR DE CAMBIO SI EL TIPO DE CAMBIO ES CIERRE            
  If @VSST_TIPO_CAMB = 'CIE'            
   Select @CNFA_CAMB = IsNull((Case When @CSST_CNTA_CAMB = 'COM' Then FA_CAMB_CMPR              
   Else FA_CAMB_VNTA End), 1)               
   From TCFACT_CIER               
   Where CO_MONE = @VSCO_MONE_0001              
   And NU_ANNO = @INNU_ANNO               
   And NU_MESE = @INNU_MES1             
            
    ---- Convierte importe original en importe moneda contabilidad                  
    Execute  SP_CONV_MONE_Q06  @ISCO_EMPR, @CSCO_MONE, @INNU_CNTB_EMP2, @CSTI_CAMB, @CSST_CNTA_CAMB,                  
    @CNFA_CAMB, @CDFE_ASTO_CNTB, @CNIM_MVTO_ORIG, 'P',@VSST_TIPO_CAMB, @CNIM_MVTO_CNTB OutPut, @VNFA_CAMB_0002 OutPut         
  End         
        
        
 Insert Into #TWMVTO_CNTB                  
 (CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO,                  
 NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU,                  
 NU_DOCU,FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, FA_CAMB_0002, FA_CAMB_DIAR, TI_OPER,                  
 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, NO_GIRA, CO_ORDE_SERV, SI_MVTO_CNTB, ST_GEST, ST_REDO)                  
 Values                  
 (@ISCO_EMPR, @INNU_CNTB_EMP2, @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO, @CNNU_MESE, @CSNU_ASTO,                  
 @CNNU_SECU, @CDFE_ASTO_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU,                  
 @CSNU_DOCU, @CDFE_DOCU, @CSST_CNTA_CAMB, @CSCO_MONE, @CNFA_CAMB, @VNFA_CAMB_0002, @CNFA_CAMB, @CSTI_OPER,                  
 IsNull(@CNIM_MVTO_ORIG,0.00), IsNull(Round(@CNIM_MVTO_CNTB, 2),0.00), @CSDE_GLOS, @CSNO_GIRA, @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, 'N', 'N')              
                  
 End                  
                  
 Fetch CU_TXMVTO_CNTB_Q41_1 Into                  
 @CSCO_UNID_CNTB, @CSCO_OPRC_CNTB, @INNU_ANNO, @CNNU_MESE, @CSNU_ASTO, @CNNU_SECU, @CDFE_ASTO_CNTB,                  
 @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_CAMB,                  
 @CSCO_MONE, @CNFA_CAMB, @CSTI_OPER, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSDE_GLOS, @CSNO_GIRA,                  
 @CSCO_ORDE_SERV, @CSSI_MVTO_CNTB, @CSST_CNTA_CAMB, @CNFA_CAMB_DIAR                   
    
 End                  
 Close CU_TXMVTO_CNTB_Q41_1                  
 Deallocate CU_TXMVTO_CNTB_Q41_1                  
    
--SELECT * FROM  #TWMVTO_CNTB    
                    
 Return                                                                                       
/*-------------------------------- Fin ------------------------------------*/            
        
        
    
    
  


GO
